﻿/***************************************************************
 * 开发人员：网魂小兵@http://www.mozlite.com
 * 
 * 目标标本：4.0.30319.239
 * 
 * 最后修改：2011/11/11 15:36:26
 * ************************************************************/
namespace Mozlite.Common
{
    using System;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;
    using System.Text.RegularExpressions;
    using System.Data;

    /// <summary>
    /// 权限解决方案。
    /// </summary>
    public class PermissionSchema
    {
        /// <summary>
        /// 初始化类<see cref="T:Mozlite.Common.PermissionSchema"/>。
        /// </summary>
        public PermissionSchema() { }

        /// <summary>
        /// 初始化类<see cref="T:Mozlite.Common.PermissionSchema"/>。
        /// </summary>
        /// <param name="reader"><see cref="T:System.Data.IDataReader"/>实例对象。</param>
        public PermissionSchema(IDataReader reader)
        {
            this.SettingsID = reader.GetInt32("SettingsID");
            this.SchemaID = reader.GetGuid("SchemaID");
            this.SchemaName = reader.GetString("SchemaName");
            this.Description = reader.GetString("Description");
            this.LastModified = reader.GetDateTime("LastModified");
            this.PermissionType = reader.GetString("PermissionType");
        }

        /// <summary>
        /// 获取或设置网站设置ID。
        /// </summary>
        public int SettingsID { get; set; }

        /// <summary>
        /// 获取或设置权限方案ID。
        /// </summary>
        public Guid SchemaID { get; set; }

        /// <summary>
        /// 获取或设置权限方案名称。
        /// </summary>
        public string SchemaName { get; set; }

        /// <summary>
        /// 获取或设置权限描述。
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// 获取或设置最后更新时间。
        /// </summary>
        public DateTime LastModified { get; set; }

        /// <summary>
        /// 获取或设置方案权限类型。
        /// </summary>
        public string PermissionType { get; set; }

        private static Regex regex = new Regex("\\.([a-z0-9]+),", RegexOptions.IgnoreCase | RegexOptions.Compiled);
        private string typeName;

        /// <summary>
        /// 获取类型名称。
        /// </summary>
        public virtual string TypeName
        {
            get
            {
                if (typeName == null && !string.IsNullOrEmpty(this.PermissionType))
                {
                    typeName = regex.Match(this.PermissionType).Groups[1].Value;
                }
                return typeName;
            }
        }
    }
}